fn main() {
    println!("Hello, world!");
    // simple output
    let x = 5+ /* 90 + */ 5;
    println!("Is x equal 10 or 100 ? x = {}", x);

    // {}会替换任务对应的参数，但参数个数要与{}个数一致
    println!("{} days", 31);

    // 这个在编译时会出错 
    // println!("{} days", 31, 44);

    //参数替换时也可以指定下标
    println!(" 参数替换时也可以指定下标");
    println!("{0}, this is {1}.   {1}, this is {0}", "Alice", "Bob");

    // 同时，也可以为参数命名进行替换
    println!(" 同时，也可以为参数命名进行替换");
    println!("{subject} {verb} {object}",
             object="the lazy dog",
             subject="the quick brown fox",
             verb="jumps over");

    // Special formatting can be specified after a `:`.
    println!("特殊格式的内容输出可以在后面加一个‘：’");
    println!("{} of {:b} people know binary, the other half don't", 1, 2);

    println!("==");
    // You can right-align text with a specified width. This will output
    // "     1". 5 white spaces and a "1".
    println!("以指定宽度右对齐输出 宽度6，输出字符1");
    println!("{number:>width$}", number=1, width=6);

    // You can pad numbers with extra zeroes. This will output "000001".
    println!("以指定宽度右对齐输出 宽度6，输出字符1，空格使用0填充");
    println!("{number:>0width$}", number=1, width=6);
}
